#include<iostream>
using namespace std;

/*
2种类型的表达式：
	左值：指向内存位置的表达式被称为左值表达式。左值可以出现在赋值号的左边或者右边。
	右值：存储在内存某些地址中的值。右值是不能对其进行赋值的表达式。
	变量是左值，数值型的字面值是右值。
*/

/*
变量声明和定义的区别：
	声明:	向编译器保证变量以给定的类型和名称存在。
		   	只在编译时有意义，在程序链接时编译器需要实际的变量定义。
		  	使用extern声明变量。
	定义：告诉编译器在何处创建变量的存储，以及如何创建变量的存储
*/

/*
	多文件编译时，只在一个文件中定义该变量，在其它引用文件中声明该变量。
	如果只声明了变量，并且引用了该变量。在编译时不会报错，在链接时报错。
*/

extern int a; //变量的声明

int main(void)
{
	int a;  //变量的定义
	a = 3;  //变量的赋值


	return 0;
}







